//package com.zpz.framework.zpzoauth.web;
//
//import ZpzOauthRedisService;
//import MsgUtils;
//import ZpzOauthCommonConstant;
//import ZpzOauthResultMsg;
//import ZpzOauthResultStatus;
//import ZpzOauthRequestUtil;
//import ZpzOauthValidUtil;
//import ForgetPwdQo;
//import RegisterQo;
//import GetUserInfoVo;
//import ZpzOauthFrameUserService;
//import io.swagger.annotations.Api;
//import io.swagger.annotations.ApiImplicitParam;
//import io.swagger.annotations.ApiImplicitParams;
//import io.swagger.annotations.ApiOperation;
//import org.apache.commons.lang3.StringUtils;
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//import org.springframework.beans.factory.annotation.Value;
//import org.springframework.web.bind.annotation.*;
//
//import javax.annotation.Resource;
//import javax.servlet.http.HttpServletRequest;
//import java.util.Map;
//
///**
// * Created on 2018/09/13.
// * @author zhangpanzhi
// * @since 1.0
// */
//@Api(tags = "用户授权管理")
//@RequestMapping("/zpzOauthManage")
//@RestController
//public class ZpzOauthManageController {
//    private static Logger log = LoggerFactory.getLogger(ZpzOauthManageController.class);
//    public static String APPLICATION_NAME;
//    @Value("${spring.application.name}")
//    public void setApplicationName(String applicationName){
//        APPLICATION_NAME=applicationName;
//    }
//    @Resource
//    private ZpzOauthFrameUserService zpzOauthFrameUserService;
//    @Resource
//    private ZpzOauthRedisService zpzOauthRedisService;
//    @ApiOperation(value = "接口：退出登录（2001） | 张盼枝" ,notes = "数据安全：请求参数不需要加密签名处理（明文），响应数据需要解密验签处理（明文）  \n" +
//            "返回码：  \n0（退出成功-OK）  \n10000（退出登录失败）")
//    @ApiImplicitParams({
////            @ApiImplicitParam(name = "token", value = "参数", paramType = "query", dataType = "string", required = true),
//    })
//    @RequestMapping(value = "/logout", method = RequestMethod.POST)
//    public ZpzOauthResultMsg<Boolean> logout(HttpServletRequest request/*, @RequestParam String token*/) throws Exception {
//        Map<String,String> re= ZpzOauthRequestUtil.getLicense(request);
//        if (re==null||StringUtils.isNotBlank(re.get("clientId"))||StringUtils.isNotBlank(re.get("userCode"))){
//            return ZpzOauthResultMsg.customResultStatus(ZpzOauthResultStatus.OAUTH_10004);
//        }
//        String clientId = re.get("clientId");
//        String userCode =  re.get("userCode");
//        String key= APPLICATION_NAME+"_"+ ZpzOauthCommonConstant.CLIENT_INFO+":client_id:"+clientId+":user:"+userCode;
//        boolean delete = zpzOauthRedisService.delete(key);
//        // 验证手机号非空
//        if (delete){
//            return ZpzOauthResultMsg.okForData(true);
//        }else{
//            return ZpzOauthResultMsg.customResultStatus(ZpzOauthResultStatus.LOGOUT_FAIL,false);
//        }
//    }
//
//    @ApiOperation(value = "接口：用户注册（10000）  |  张盼枝" ,notes = "不需要登录  \n数据安全：请求参数需要加密签名处理（密文），响应数据不需要解密不需要验签处理（明文）" +
//            "  \n返回码：0（注册成功-OK）  \n30037(该账号被锁定)  \n30038（您已是奥扬平台的用户，请授权访问该系统）  \n30002(手机号不能为空)  \n30003（密码不能为空）  \n30004（验证码不能为空）  \n30006（手机号格式错误）  \n30007（密码格式错误）  \n30005（验证码无效）  \n30017（账号生成失败）  \n30023（账户生成失败）")
//    @ApiImplicitParams({
//            @ApiImplicitParam(name = "registerQo", value = "参数", paramType = "body", dataType = "RegisterQo", required = true),
//    })
//    @RequestMapping(value = "/register", method = RequestMethod.POST)
//    public ZpzOauthResultMsg<Boolean> register(HttpServletRequest request, @RequestBody RegisterQo registerQo) throws Exception {
//        Map<String,String> re= ZpzOauthRequestUtil.getLicense(request);
//        if (re==null||StringUtils.isNotBlank(re.get("clientId"))){
//            return ZpzOauthResultMsg.customResultStatus(ZpzOauthResultStatus.OAUTH_10004);
//        }
//        String clientId = re.get("clientId");
//        // 验证手机号非空
//        if (!StringUtils.isNotBlank(registerQo.getPhoneNumber())){
//            return  ZpzOauthResultMsg.customResultStatus(ZpzOauthResultStatus.USER_MOBILE_NOT_NULL_30002);
//        }
//        //验证密码非空
//        if (!StringUtils.isNotBlank(registerQo.getPassword())){
//            return  ZpzOauthResultMsg.customResultStatus(ZpzOauthResultStatus.USER_PASSWORD_NOT_NULL_30003);
//        }
//        //验证手机号是否存在
//        ZpzOauthResultMsg<Boolean> mobileMsg = zpzOauthFrameUserService.mobileExist(registerQo.getPhoneNumber(),clientId);
//        if (mobileMsg.getData()){
//            return  mobileMsg;
//        }
//        //验证验证码非空
//        if (!StringUtils.isNotBlank(registerQo.getShortMsgCode())){
//            return  ZpzOauthResultMsg.customResultStatus(ZpzOauthResultStatus.USER_VALID_CODE_NOT_NULL_30004);
//        }
//        //验证手机格式
//        if (!ZpzOauthValidUtil.isMobile(registerQo.getPhoneNumber())){
//            return  ZpzOauthResultMsg.customResultStatus(ZpzOauthResultStatus.USER_MOBILE_FORMAT_ERROR_30006);
//        }
//        //验证密码格式
//        if (!ZpzOauthValidUtil.checkUserPwd(registerQo.getPassword())){
//            return  ZpzOauthResultMsg.customResultStatus(ZpzOauthResultStatus.USER_PASSWORD_FORMAT_ERROR_30007);
//        }
//        //验证验证码是否正确
//        boolean b = MsgUtils.validateMsgCode(registerQo.getPhoneNumber(), registerQo.getShortMsgCode());
//        if (!b){
//            return  ZpzOauthResultMsg.customResultStatus(ZpzOauthResultStatus.USER_VALID_CODE_ERROR_30005);
//        }
//        return zpzOauthFrameUserService.register(registerQo,clientId);
//    }
//    @ApiOperation(value = "接口：忘记密码（10001）  |  张盼枝" ,notes = "此接口不需要在登录状态下操作即请求不需要携带token  \n数据安全：请求参数需要加密签名处理（密文），响应数据不需要解密不需要验签处理（明文）  \n" +
//            "返回码：  \n" +
//            "  \n0（密码修改成功-OK）  \n30002(手机号不能为空)  \n30003（密码不能为空）  \n30004（验证码不能为空）  \n30006（手机号格式错误）" +
//            "   \n30007（密码格式错误）  \n30005（验证码无效）  \n30009（密码修改失败）  \n" +
//            "请求体： {\"password\":\"123321\",\"phoneNumber\":\"15001383849\",\"shortMsgCode\":\"121345\"}")
//
//    @ApiImplicitParams({
//            @ApiImplicitParam(name = "forgetPwdQo", value = "忘记密码参数", paramType = "body", dataType = "ForgetPwdQo", required = true),
//    })
//    @RequestMapping(value = "/forgetPwd", method = RequestMethod.POST)
//    public ZpzOauthResultMsg<Boolean> forgetPwd(HttpServletRequest request, @RequestBody ForgetPwdQo forgetPwdQo) throws Exception {
//        // 验证手机号非空
//        if (!StringUtils.isNotBlank(forgetPwdQo.getPhoneNumber())){
//            return  ZpzOauthResultMsg.customResultStatus(ZpzOauthResultStatus.USER_MOBILE_NOT_NULL_30002);
//        }
//        //验证密码非空
//        if (!StringUtils.isNotBlank(forgetPwdQo.getPassword())){
//            return  ZpzOauthResultMsg.customResultStatus(ZpzOauthResultStatus.USER_PASSWORD_NOT_NULL_30003);
//        }
//        //验证验证码非空
//        if (!StringUtils.isNotBlank(forgetPwdQo.getShortMsgCode())){
//            return  ZpzOauthResultMsg.customResultStatus(ZpzOauthResultStatus.USER_VALID_CODE_NOT_NULL_30004);
//        }
//        //验证手机格式
//        if (!ZpzOauthValidUtil.isMobile(forgetPwdQo.getPhoneNumber())){
//            return  ZpzOauthResultMsg.customResultStatus(ZpzOauthResultStatus.USER_MOBILE_FORMAT_ERROR_30006);
//        }
//        //验证密码格式
//        if (!ZpzOauthValidUtil.checkUserPwd(forgetPwdQo.getPassword())){
//            return  ZpzOauthResultMsg.customResultStatus(ZpzOauthResultStatus.USER_PASSWORD_FORMAT_ERROR_30007);
//        }
//        //验证验证码是否正确
//        boolean b = MsgUtils.validateMsgCode(forgetPwdQo.getPhoneNumber(), forgetPwdQo.getShortMsgCode());
//        if (!b){
//            return  ZpzOauthResultMsg.customResultStatus(ZpzOauthResultStatus.USER_VALID_CODE_ERROR_30005);
//        }
//        Map<String,String> re= ZpzOauthRequestUtil.getLicense(request);
//        if (re==null||StringUtils.isNotBlank(re.get("clientId"))){
//            return ZpzOauthResultMsg.customResultStatus(ZpzOauthResultStatus.OAUTH_10004);
//        }
//        String clientId = re.get("clientId");
//        return zpzOauthFrameUserService.forgetPwd(clientId,forgetPwdQo);
//    }
//
//    @ApiOperation(value = "接口：获取用户信息（10012）  |  张盼枝",notes ="数据安全：请求参数不需要加密签名处理（明文），响应数据需要解密需要验签处理（密文）  \n" +
//            "返回码：    \n0（获取信息成功-OK）" )
//    @ApiImplicitParams({
//            @ApiImplicitParam(name = "userCode", value = "用户编号", paramType = "query", dataType = "string", required = true)
//    })
//    @RequestMapping(value = "/getUserInfo", method = RequestMethod.GET)
//    public ZpzOauthResultMsg<GetUserInfoVo> getUserInfo(HttpServletRequest request, @RequestParam String userCode) throws Exception {
//        return zpzOauthFrameUserService.getUserInfo(userCode);
//    }
//
//}
